const ToolLibrary = {
  Ht_Hxy_get_the_specified_stringr(str, reg, n) {
    /*
     * 作者：胡晓洋
     * 时间：2020/5/16
     * 语法：js
     * 介绍：根据正则表达式将字符串截取成N段，获取指定字符串段，
     * 参数说明: str字符串 类型:String  reg 正则表达式或者字符串 类型：String，n 获取第几段字符串 类型：Number
     * 返回值说明: 返回一段字符串，类型：String
     */
    return str.split(reg)[n]
  },
  Ht_Hxy_clearObjNull(obj, arr = []) {
    /*
     * 作者：胡晓洋
     * 时间：2020/5/16
     * 语法：js
     * 介绍：删除对象中值为null的字段
     * 参数说明: obj目标对象 类型:Object， arr数组 除去null意外的值后，还需要删除的值，类型：Array
     * 返回值说明: 返回新的对象，类型：Object
     */
    const target = JSON.parse(JSON.stringify(obj))
    Object.keys(target).forEach((key) => {
      if (this.h_getDataType(target[key]) === 'Object') {
        if (Object.keys(target[key]).length === 0) {
          delete target[key]
        } else {
          target[key] = this.Ht_Hxy_clearObjNull(target[key], arr)
        }
      } else {
        if (
          !target[key] ||
          arr.findIndex((item) => item === target[key]) > -1
        ) {
          delete target[key]
        }
      }
    })
    return target
  },
  Ht_Hxy_getTargetType(target) {
    /*
     * 作者：胡晓洋
     * 时间：2020/5/16
     * 语法：js
     * 介绍：判断变量类型
     * 参数说明: 变量名
     * 返回值说明: 首字母大写的类型名称
     */
    return [
      'Null',
      'Undefined',
      'String',
      'Number',
      'Function',
      'Date',
      'Array',
      'RegExp',
      'Object',
    ].find(
      (item) =>
        Object.prototype.toString.call(target) === '[object ' + item + ']'
    )
  },
  // 判断非空对象
  Ht_Hxy_objectIsEmpty(target) {
    return !!Object.keys(target).length
  },
  Ht_Hxy_randomString(length) {
    /*
     * 作者：胡晓洋
     * 时间：2020/5/16
     * 语法：js
     * 介绍：随机生成一个字符串
     * 参数说明: length 字符串长度，类型 Number
     * 返回值说明: 首字母大写的类型名称
     */
    const defaultstr =
      'abcdefghigklmnopqrstuvwxyzABCDEFGHJKMNPQRSTWXYZ0123456789'
    const strLength = defaultstr.length
    let target = ''
    for (var i = 0; i < length; i++) {
      target += '' + defaultstr.charAt(Math.floor(Math.random() * strLength))
    }
    return target
  },
}
ToolLibrary.length = Object.keys(ToolLibrary).length
export default ToolLibrary
